home *** CD-ROM | disk | FTP | other *** search
/ Amiga Format CD 52 / Amiga Format AFCD52 (Issue 136, May 2000).iso / -screenplay- / shareware / solitarexx / scripts / maze.srx < prev    next >
Text File  |  2000-02-29  |  2KB  |  86 lines

  1. /****************************\
  2. ** Maze v1.0 for Solitarexx **
  3. **   by Michal Szafranski   **
  4. \****************************/
  5. OPTIONS RESULTS
  6.  
  7. tex = '"Maze v1.0"'
  8. ADDBUTTON 0 10 "Start"
  9. ADDTEXT 4 42 tex 6
  10. ADDBUTTON 12 10 "Abort"
  11. ADDTEXT 14 42 tex 6
  12. SELECTGUI 1
  13. SCREENSIZE 6 0 10 0
  14. DO i = 0 TO 53
  15.     NEWSTACK i 0 0 (i//9) (i%9)
  16.     stack.i = RESULT
  17. END
  18. NEWSTACK 54 0 1 9 0
  19. deck = RESULT
  20. NEWSTACK 55 0 1 9 1
  21. waste = RESULT
  22. ADDCARDS deck SHUFFLED
  23.  
  24. DO FOREVER
  25.     ACTION
  26.     PARSE VAR RESULT act rest
  27.     IF act = 1 THEN EXIT
  28.     IF act = 3 THEN CALL GAME
  29. END
  30.  
  31. GAME:
  32.     CLEANUP deck
  33.     SELECTGUI 4
  34.     CALL DODECK
  35.     DO FOREVER
  36.         ACTION
  37.         PARSE VAR RESULT act stack sid card
  38.         IF act = 1 THEN EXIT
  39.         IF act = 2 THEN SELECT
  40.             WHEN sid < 54 & card > 0 THEN CALL DOMOVE
  41.             OTHERWISE ERRBEEP
  42.         END
  43.         IF act = 3 THEN DO
  44.             SELECTGUI 1
  45.             RETURN
  46.         END
  47.     END
  48. RETURN
  49. DODECK:
  50.     DO i = 0 TO 53
  51.         IF i~=8 & i~=17 THEN DO
  52.             CARDSELECT deck 1
  53.             PARSE VAR RESULT kol.i war.i .
  54.             mm = stack.i
  55.             IF war.i = 12 THEN mm = waste
  56.             MOVECARDS deck mm REVERSE
  57.         END
  58.         ELSE war.i = 12
  59.     END
  60. RETURN
  61. DOMOVE:
  62.     CARDSELECT stack 1
  63.     PARSE VAR RESULT kol war .
  64.     i = sid
  65.     l = (sid+53)//54
  66.     ok = 0
  67.     DO WHILE ok = 0 & i~= l
  68.         i = (i+1)//54
  69.         IF war.i = 12 THEN DO
  70.             in = (i+1)//54
  71.             IF war.in>0 & war.in<12 & war.in - war =1 & kol.in = kol THEN ok = 1
  72.             IF war.in=0 & war = 11 THEN ok = 1
  73.             ip = (i+53)//54
  74.             IF war.ip<11 & war - war.ip = 1 & kol.ip = kol THEN ok = 1
  75.             IF war.ip=11 & war=0 THEN ok = 1
  76.         END
  77.     END
  78.     IF ok=1 THEN DO
  79.         war.sid = 12
  80.         war.i = war
  81.         kol.i = kol
  82.         MOVECARDS stack stack.i
  83.     END
  84.     ELSE ERRBEEP
  85. RETURN
  86.